package com.newlink.building.main.ui

import android.content.Intent
import android.graphics.Color
import android.view.View
import com.newlink.building.common_base.base.NL_BaseActivity
import com.newlink.building.common_base.ext.showToast
import com.newlink.building.common_base.widget.CustomInputDialog
import com.newlink.building.main.R
import com.newlink.building.main.databinding.ActivityAddDeviceBinding

/**
 * @Author: xiaodong
 * @Date: 2022/9/21
 * @Description: 添加设备界面，允许用户手动输入设备名称、MAC地址、设备位置，或通过扫码绑定设备。
 */
class Module_Main_AddDeviceActivityNL : NL_BaseActivity(), View.OnClickListener {

    // 视图绑定实例
    private lateinit var binding: ActivityAddDeviceBinding

    /**
     * 绑定布局文件并返回根视图。
     */
    override fun attachLayoutRes(): View {
        binding = ActivityAddDeviceBinding.inflate(layoutInflater)
        return binding.root
    }

    /**
     * 初始化数据，当前无特定数据需要初始化。
     */
    override fun initData() {
        // No specific data initialization required at the moment
    }

    /**
     * 初始化视图组件和设置监听器。
     */
    override fun initView() {
        // 设置标题栏文本和扫码图标
        binding.layoutTittlebar.titleCenterTitlebar.text = getString(R.string.add_device)
        binding.layoutTittlebar.rightIconTitlebar.visibility = View.VISIBLE
        binding.layoutTittlebar.rightIconTitlebar.setImageResource(R.drawable.scan_blue)
        // 注意：setColorFilter(Color.WHITE) 在某些图标上可能导致无法识别
        // 如果图标本身是蓝色，设置为白色滤镜会将其变为白色。如果图标是多色，效果可能不理想。
        binding.layoutTittlebar.rightIconTitlebar.setColorFilter(Color.WHITE)

        // 设置所有点击事件监听器
        setClickListeners()
    }

    /**
     * 设置所有可点击视图的监听器。
     */
    private fun setClickListeners() {
        binding.layoutTittlebar.backTitlebar.setOnClickListener(this)
        binding.layoutTittlebar.rightIconTitlebar.setOnClickListener(this)
        binding.llDeviceName.setOnClickListener(this)
        binding.llDeviceMac.setOnClickListener(this)
        binding.llDeviceLocation.setOnClickListener(this)
        binding.btnAdd.setOnClickListener(this)
    }

    /**
     * 处理所有点击事件。
     * @param view 被点击的视图。
     */
    override fun onClick(view: View) {
        when (view.id) {
            R.id.back_titlebar -> finish() // 返回按钮，结束当前 Activity
            R.id.right_icon_titlebar -> { // 扫码按钮，跳转到 QR 绑定界面
                val intent = Intent(this, Module_Main_QRBindActivityNL::class.java)
                startActivity(intent)
            }

            R.id.ll_device_name -> showCustomInputDialog(
                getString(R.string.device_name),
                CustomInputDialog.TYPE_DEVICE_NAME
            )

            R.id.ll_device_mac -> showCustomInputDialog(
                getString(R.string.device_mac),
                CustomInputDialog.TYPE_DEVICE_MAC
            )

            R.id.ll_device_location -> showCustomInputDialog(
                getString(R.string.device_location),
                CustomInputDialog.TYPE_DEVICE_LOCATION
            )

            R.id.btn_add -> { // 添加设备按钮，目前只显示一个提示
                showToast(getString(R.string.tip_device_add_failed))
                // 实际项目中这里会包含设备添加的业务逻辑
            }
        }
    }

    /**
     * 显示自定义输入对话框，用于输入设备相关信息。
     * @param title 对话框的标题。
     * @param type 输入类型，对应 CustomInputDialog 中的常量（如 TYPE_DEVICE_NAME）。
     */
    private fun showCustomInputDialog(title: String, type: Int) {
        val customInputDialog = CustomInputDialog(this)
        customInputDialog.setTitle(title).setType(type)
            .setNegativeButton(listener = object : CustomInputDialog.OnClickListener {
                override fun onClick(type: Int, inputText: String) {
                    customInputDialog.dismiss() // 取消按钮，关闭对话框
                }
            })
            .setPositiveButton(listener = object : CustomInputDialog.OnClickListener {
                override fun onClick(type: Int, inputText: String) {
                    // 根据输入类型更新对应的文本视图
                    when (type) {
                        CustomInputDialog.TYPE_DEVICE_NAME -> binding.tvDeviceNameHint.text =
                            inputText

                        CustomInputDialog.TYPE_DEVICE_MAC -> binding.tvDeviceMacHint.text =
                            inputText

                        CustomInputDialog.TYPE_DEVICE_LOCATION -> binding.tvDeviceLocationHint.text =
                            inputText
                    }
                    customInputDialog.dismiss() // 确定按钮，关闭对话框
                }
            })
        customInputDialog.show()
    }
}